package com.example.ragproject.assistant;


import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import dev.langchain4j.service.spring.AiService;

/***
 * AiService会组装Assistant接口以及其他组件，并使用反射机制创建一个时间Assistant的代理对象，这个代理对象会处理输入输出的所有转换工作，在这个例子里，
 * chat的方法的输入是一个字符串，但是大模型需要一个UserMessage对象。所以，代理对象将这个字符串转换为UserMessages，并调用聊天语言模型。chat方法的输出类型也是
 * 字符串，但是大模型返回的是AiMessage对象，代理对象会将其转换为字符串
 */
@AiService(chatMemory = "chatMemory")
public interface Assistant {


    //占位符，有两个以上的参数一定要用@V
    @UserMessage("你是我的好朋友，请用上海话回答问题，并且添加一些表情符号。{{message}}")
    String chat(@V("message") String userMessage);
}
